package com.zy.qudadid.network;

import com.zy.bean.Dingdan;
import com.zy.bean.Users;
import com.zy.qudadid.model.About;
import com.zy.qudadid.model.DownWindStroke;
import com.zy.qudadid.model.GuDingLuCheng;
import com.zy.qudadid.model.IntegralOther;
import com.zy.qudadid.model.Message;
import com.zy.qudadid.model.MyCoupon;
import com.zy.qudadid.model.NearCar;
import com.zy.qudadid.model.PayList;
import com.zy.qudadid.model.PayListAfter;
import com.zy.qudadid.model.Res;
import com.zy.qudadid.model.Shop;
import com.zy.qudadid.model.StrokeBean;
import com.zy.qudadid.model.StrokeInfor;
import com.zy.qudadid.model.StrokeInfors;
import com.zy.qudadid.model.Travel;
import com.zy.qudadid.model.User;

import java.util.ArrayList;

import okhttp3.MultipartBody;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
import rx.Observable;

/**
 ******************************************************
 *                                                    *
 *                                                    *
 *                       _oo0oo_                      *
 *                      o8888888o                     *
 *                      88" . "88                     *
 *                      (| -_- |)                     *
 *                      0\  =  /0                     *
 *                    ___/`---'\___                   *
 *                  .' \\|     |# '.                  *
 *                 / \\|||  :  |||# \                 *
 *                / _||||| -:- |||||- \               *
 *               |   | \\\  -  #/ |   |               *
 *               | \_|  ''\---/''  |_/ |              *
 *               \  .-\__  '-'  ___/-. /              *
 *             ___'. .'  /--.--\  `. .'___            *
 *          ."" '<  `.___\_<|>_/___.' >' "".          *
 *         | | :  `- \`.;`\ _ /`;.`/ - ` : | |        *
 *         \  \ `_.   \_ __\ /__ _/   .-` /  /        *
 *     =====`-.____`.___ \_____/___.-`___.-'=====     *
 *                       `=---='                      *
 *                                                    *
 *                                                    *
 *     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    *
 *                                                    *
 *               佛祖保佑         永无BUG              *
 *                                                    *
 *                                                    *
 ******************************************************
 *
 * Created by ninos on 2016/6/2.
 *
 */
public interface ApiService {

//    //获取城市列表
//    @GET("api.php")
//    Observable<Res<ArrayList<City>>> GetCityList(@Query("c") String c, @Query("a") String a);

    //司机注册最后
    @GET("api.php")
    Observable<Res> driverreg(@Query("c") String c, @Query("a") String a, @Query("args") String data);

    //司机抢单
    @GET("api.php")
    Observable<Res> acceptOrder(@Query("c") String c, @Query("a") String a, @Query("args") String args);

    //司机乘客上车计费
    @GET("api.php")
    Observable<Res> startOrder(@Query("c") String c, @Query("a") String a, @Query("args") String args);

    //司机更改订单状态
    @GET("api.php")
    Observable<Res> changeOrderstate(@Query("c") String c, @Query("a") String a, @Query("args") String args);

    //司机更改价格
    @GET("api.php")
    Observable<Res> changeOrderprice(@Query("c") String c, @Query("a") String a, @Query("args") String args);

    //司机订单详情
    @GET("api.php/Order/order_details")
    Observable<Res<Travel>> passengerOrder(@Query("args") String args);

    //司机乘客下车付款前四项
    @GET("api.php")
    Observable<Res<PayList>> beforepay(@Query("c") String c, @Query("a") String a, @Query("args") String args);

    //司机乘客下车付款后四项
    @GET("api.php")
    Observable<Res<PayListAfter>> givefee(@Query("c") String c, @Query("a") String a, @Query("args") String args);

    //司机我的行程
    @GET("api.php/Order/finished")
    Observable<Res<ArrayList<StrokeInfor>>> MyTravel(@Query("args") String args);

    //拼车
    @GET("api.php/Order/callCar")
    Observable<Res> PublishOrder(@Query("args") String args);

    //司机根据距离获取价格
    @GET("api.php/Order/carpool_price")
    Observable<Res> GetMoney( @Query("args") String args);

    //司机根据距离获取价格
    @GET("api.php/Order/complain")
    Observable<Res> complaint( @Query("args") String args);

    //司机根据距离获取价格
    @GET("api.php")
    Observable<Res<Users>> getpeopleinfo(@Query("c") String c, @Query("a") String a, @Query("args") String args);

    //司机附近和跨城
    @GET("api.php/Order/roughly")
    Observable<Res<ArrayList<GuDingLuCheng>>> GetNearbyDriver(@Query("args") String args);

    //司机附近和跨城
    @GET("api.php/Order/oftrnArea")
    Observable<Res<ArrayList<GuDingLuCheng>>> getCommonUsedRoute(@Query("args") String args);

    //司机附近和跨城
    @GET("api.php/Order/nearbyDriver")
    Observable<Res<ArrayList<NearCar>>> GetNearbyDriver2(@Query("args") String args);

    //司机评价
    @GET("api.php")
    Observable<Res> postcomment(@Query("c") String c, @Query("a") String a, @Query("args") String args);

    //司机获取关于我们
    @GET("api.php")
    Observable<Res<About>> getAboutInfo(@Query("c") String c, @Query("a") String a, @Query("type") String type, @Query("id") String id);

    //司机消息查询
    @GET("api.php?c=public&a=xxzx&isdriver=0")
    Observable<Res<ArrayList<Message>>> GetMessage();

    //司机消息查询
    @GET("api.php")
    Observable<Res<ArrayList<Message>>> Message(@Query("c") String c, @Query("a") String a, @Query("args") String args);

    //乘客注册
    @GET("api.php/User/Passenger_register/")
    Observable<Res> register(@Query("args") String args);

    //乘客忘记密码
    @GET("api.php/User/Passenger_pwd")
    Observable<Res> forgetPassword(@Query("args") String args);

    //乘客登录
    @GET("api.php/User/Passenger_login")
    Observable<Res<User>> login(@Query("args") String args);

    //----------------------------------------------------------------

    //乘客注册司机
    @GET("api.php/User/driver_registration/")
    Observable<Res> RegisterDriver(@Query("args") String data);

    //乘客注册
    @GET("api.php/User/Passenger_register/")
    Observable<Res<User>> Register(@Query("args") String args);

    //乘客修改密码
    @GET("api.php/User/Passenger_pwd")
    Observable<Res<User>> resetPassword(@Query("args") String args);

    //乘客登录
    @GET("api.php/User/Passenger_login")
    Observable<Res<User>> Login(@Query("args") String args);

    //乘客叫车
    @GET("api.php/Order/callCar")
    Observable<Res<Dingdan>> CallCar(@Query("args") String args);

    //乘客叫顺风车
    @GET("api.php/free/callCar")
    Observable<Res<Dingdan>> CallCar2(@Query("args") String args);


    //乘客取消订单（不拼车，拼车，单方面取消）
    @GET("api.php/Order/passengerCancel_order")
    Observable<Res<Dingdan>> CancelCallCar(@Query("args") String args);

    //乘客修改其他信息，年龄，性别，标签......
    @GET("api.php/User/Passenger_information")
    Observable<Res> ChangeInfo(@Query("args") String args);

    //司机乘客查询个人信息
    @GET("api.php/User/information")
    Observable<Res<User>> InquireInfo(@Query("args") String args);

    //乘客查询钱包余额
    @GET("api.php/Money/money")
    Observable<Res> getWalletMoney(@Query("args") String args);

    //乘客是否确认上车司机确认上车(不拼车，拼车共用)
    @GET("api.php/Order/passengerOn_car")
    Observable<Res<Dingdan>> Boarding(@Query("args") String args);

    //出租车费用，里程，时间估算预估（高得地图）
    @GET("api.php/User/information")
    Observable<Res<User>> EstimatedFare(@Query("args") String args);

    //司机我的行程
    @GET("api.php/Order/finished")
    Observable<Res<StrokeInfors>> MyStroke(@Query("args") String args);

    //司机我的行程
    @GET("api.php/Order/finished")
    Observable<Res<DownWindStroke>> MyStroke2(@Query("args") String args);

    //司机上传资质，身份证，驾驶证，行驶证
    @Multipart
    @POST("api.php/User/post_Qualifications")
    Observable<Res> post_Qualifications(@Part MultipartBody.Part imgsrc, @Part MultipartBody.Part mobile, @Part MultipartBody.Part type);

    //查询登录用户的订单（司机或乘客各种状态及所有）
    @GET("api.php/Order/logOn_users")
    Observable<Res<ArrayList<StrokeBean>>> Stroke(@Query("args") String args);


    /**
     * 积分商城
     * @return
     */
    @GET("api.php/shop/index")
    Observable<Res<ArrayList<Shop>>> getShopList();

    /**
     * 积分
     * @param args
     * @return
     */
    @GET("api.php/Shop/points")
    Observable<Res<ArrayList<IntegralOther>>> getIntegralList(@Query("args") String args);

    /**
     * 获取积分
     * @return
     */
    @GET("api.php/Shop/poway")
    Observable<Res<ArrayList<IntegralOther>>> getIntegralList();

    /**
     * 兑换记录
     * @param args
     * @return
     */
    @GET("api.php/Shop/exchange")
    Observable<Res<ArrayList<IntegralOther>>> getIntegralList2(@Query("args") String args);

    /**
     * 查看我的优惠券
     * @param args
     * @return
     */
    @GET("api.php/Money/index")
    Observable<Res<ArrayList<MyCoupon>>> getMyCouponList(@Query("args") String args);

    //司机消息查询
    @GET("api.php/User/system_push")
    Observable<Res<ArrayList<Message>>> Message(@Query("args") String args);
}
